1
Durées de vie des objets locaux : Automatiques vs. Statiques
AI037Lesson 10
00:00

Dans la pièce de C++, chaque objet a une durée de vie—le durée de vie de l'objet. Cela définit la durée pendant laquelle un objet occupe de l'espace en mémoire. Dans un corps de fonction, le comportement par défaut pour variables locales est d'être automatique, mais nous pouvons les forcer à être statique afin de changer leur destinée.

1. Objets automatiques

Par défaut, les variables locales sont des objets automatiques. Elles naissent (sont initialisées) lorsque l'exécution de la fonction atteint leur définition et meurent (sont récupérées) lorsque le bloc se termine. Elles résident sur la pile, ce qui les rend fraîches à chaque appel.

2. Objets statiques locaux

Lorsque vous utilisez le mot-clé statique , vous créez un objet local statique. Ces objets sont initialisés une seule fois—avant la première exécution du contrôle passant par leur définition—et restent en vie jusqu'à la fin du programme. Cela permet à une fonction de « se souvenir » de son état sans polluer l'espace global.

Pile (Automatique)[ temp_val ]Détruit à la fin du blocSegment de données (Statique)[ persistent_val ]Vit jusqu'à la sortie du programme

3. Le piège de la récursivité

Dans une fonction récursive, chaque boucle de récursivité crée une instance distincte de ses objets automatiques. Si la récursivité est profonde, cela consomme une quantité significative d'espace sur la pile. À l'inverse, un statique objet est partagé à tous les niveaux de cette récursivité.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>